


namespace Core.Extensions
{
    using System;
    using System.Collections.Generic;
    using Base;
    using Contracts.Enums;
    using Contracts.Interfaces;
    using Resources;

    /// <summary>
    /// Nexus  Assault Extension class
    /// </summary>
    
    public sealed class NexusAssault: ExtensionBase
    {
        /// <summary>
        /// Create a new instance of the <see cref="T:Core.Extensions.NexusAssault"/> class.
        /// </summary>
        public NexusAssault()
            : base(
                Traduction.extensions_nexus_assault, 
                ExtensionGroupsEnum.NexusManagement,
                7,
                0, 
                new ExtensionCost(245000,0),
                new ICondition<IExtension>[] {new ExtensionCondition<BasicSquadManagement>(1),new ExtensionCondition<ComplexMissileLaunch>(3),new ExtensionCondition<Rapidfiring>(3)} )
        {
            Modifiers = new IModifier[] { new Modifier(FeatureTypesEnum.Module, FeaturesEnum.NexusModuleWeaponCycleTime, 0.01),
                                          new Modifier(FeatureTypesEnum.Robot, FeaturesEnum.SmallFirearmCycleTime, 0.01), 
                                          new Modifier(FeatureTypesEnum.Robot, FeaturesEnum.SmallLaserCycleTime, 0.01),
                                          new Modifier(FeatureTypesEnum.Robot, FeaturesEnum.SmallMagneticWeaponCycleTime, 0.01),
                                          new Modifier(FeatureTypesEnum.Robot, FeaturesEnum.SmallMissileLauncherCycleTime, 0.01),
                                          new Modifier(FeatureTypesEnum.Robot, FeaturesEnum.MediumFirearmCycleTime, 0.01), 
                                          new Modifier(FeatureTypesEnum.Robot, FeaturesEnum.MediumLaserCycleTime, 0.01),
                                          new Modifier(FeatureTypesEnum.Robot, FeaturesEnum.MediumMagneticWeaponCycleTime, 0.01),
                                          new Modifier(FeatureTypesEnum.Robot, FeaturesEnum.MediumMissileLauncherCycleTime, 0.01),
            };
            
        }

        /// <summary>
        /// Obtains the extension description
        /// </summary>
        public override string Description
        {
            get { return Traduction.extensions_nexus_assault_description; }
        }
    }
}